<?php
class ControllerStartupRouter extends Controller
{
    public function index()
    {
        // Route
        if (isset($this->request->get['route']) && $this->request->get['route'] != 'startup/router') {
            $route = $this->request->get['route'];
        } else {
            $route = $this->config->get('action_default');
        }
        
        // Sanitize the call
        $route = preg_replace('/[^a-zA-Z0-9_\/]/', '', (string)$route);
        

        /* gd_quick_checkout.xml */
        if ($route === 'checkout/checkout') {
            $route = str_replace('checkout/checkout', 'quick_checkout/checkout', $route);
        }

        $route = str_replace('checkout/checkout/connect', 'quick_checkout/checkout/connect', $route);
        $route = str_replace('checkout/cart', 'quick_checkout/cart', $route);
        /* gd_quick_checkout.xml */
      
        // Trigger the pre events
        $result = $this->event->trigger('controller/' . $route . '/before', array(&$route, &$data));
        
        if (!is_null($result)) {
            return $result;
        }
        
        // We dont want to use the loader class as it would make an controller callable.
        $action = new Action($route);
        
        // Any output needs to be another Action object.
        $output = $action->execute($this->registry);
        
        // Trigger the post events
        $result = $this->event->trigger('controller/' . $route . '/after', array(&$route, &$data, &$output));
        
        if (!is_null($result)) {
            return $result;
        }
        
        return $output;
    }
}
